`timescale 1ns / 1ps
`include "defines.v"
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2019/11/09 14:53:49
// Design Name: 
// Module Name: if_id
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments: 暂时保存取值阶段取得的指令以及对应指令地址，并在下一个时钟周期传递到译码阶段
// 
//////////////////////////////////////////////////////////////////////////////////


module if_id(
    input wire clk,
    input wire rst,
    //来自取指阶段的信号
    input wire[`InstAddrBus] if_pc,  //取值阶段取得的指令对应的地址
    input wire[`InstBus] if_inst,    //取值阶段取得的指令
    //对应译码阶段的信号
    output reg[`InstAddrBus] id_pc,    //译码阶段的指令对应的地址
    output reg[`InstBus] id_inst    //译码阶段的指令
    );

    always @(posedge clk) begin
        if (rst == `RstEnable) begin
            id_pc <= `ZeroWord;
            id_inst <= `ZeroWord;
        end else begin
            id_pc <= if_pc;
            id_inst <= if_inst;
        end
    end

endmodule
